const net = require('net');
// 创建socket
const socket = new net.Socket({});

socket.connect({
    host: '127.0.0.1',
    port: 8000
});

// 先启动server，再执行客户端，打印客户端传递的数据buffer

const LESSON_IDS = [
    "136797",
    "136798",
    "136799",
    "136800",
    "136801",
    "136803",
    "136804",
    "136806",
    "136807",
    "136808",
    "136809",
    "141994",
    "143517",
    "143557",
    "143564",
    "143644",
    "146470",
    "146569",
    "146582"
]
//  自增的seq
let seq = 0;
let id = Math.floor(Math.random() * LESSON_IDS.length);
// 传入对应的inde来获取标题
function encode(index) {
    let buffer = Buffer.alloc(6);
    // 写入到buffer的前两位
    buffer.writeInt16BE(seq);
    buffer.writeInt32BE(LESSON_IDS[index], 2);
    console.log(seq,LESSON_IDS[index])
    seq++;
    return buffer;
}
// 写入buffer
socket.write(encode(id));
// 获取返回的buffer数据
socket.on('data', (buffer) => {
    const seqBuffer = buffer.slice(0, 2);
    const titleBuffer = buffer.slice(2);
    console.log(seqBuffer.toString(),'==', titleBuffer.toString()); // buffer 为同级文件夹中讲述到的Buffer模块
    id = Math.floor(Math.random() * LESSON_IDS.length);
    socket.write(encode(id));
})
// 一来一回的半双工通信，（感觉像TCP连接）
// 全双工通信不需要等待返回，可以同时发送数据

// 时序性的解决方案：带上各自的序号

